package ru.chaykin.viewobject;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;

import javax.microedition.khronos.opengles.GL10;

import ru.chaykin.load.parse.MIFParser;
import ru.chaykin.primitives.Circle;

/**
 * Хранит объекты для отображения на экране
 * @author k.chaykin
 */
public abstract class ViewObject {

	/**
	 * Индекс, по которому можно получить инфу из MID-файла
	 */
	protected int midIndex;
	
	/**
	 * Уникальный идентификатор объекта
	 */
	protected int id; 
	
	private static String fName;
	
	/**
	 * Окружность, описанная вокруг объекта
	 */
	protected Circle boundCircle;
	
	public abstract void draw(GL10 gl);
	
	public static void setMIDFileName(String fName) {
		ViewObject.fName = fName;
	}
	
	public Circle getBoundCircle() {
		return boundCircle;
	}
	
	public static String[] getMIDInfo(int midIndex) throws Exception {
		Reader reader = new InputStreamReader(new FileInputStream(fName), "CP1251");
		BufferedReader midFile = new BufferedReader(reader);
		for (int i = 0; i < midIndex - 1; i++) {
			midFile.readLine();
		}
		String columns = midFile.readLine();
		midFile.close();
		return columns.split(MIFParser.getSeparator());
	}
	
	public int getMIDIndex() {
		return midIndex;
	}
	
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}

	abstract public void setSelected(boolean sel);

	abstract public boolean isRegion();
}
